package com.itheima.dubbo.interfaces;

import com.itheima.commons.pojo.mongo.FollowUser;
import com.itheima.commons.pojo.mongo.Video;

import java.util.List;

/**
 * @author yaohu
 * @date 2021/12/10
 * @Version 1.0
 * @describe
 */
public interface VideoApi {

    /**
     * 发布小视频
     *
     * @param video
     * @return 保存成功后，返回视频id
     */
    String saveVideo(Video video);

    /**
     * 抽样推荐小视频
     *
     * @param pageSize
     * @return
     */
    List<Video> randomVideos(Integer pageSize);

    /**
     * 通过vid查询小视频信息
     *
     * @param vids
     * @return
     */
    List<Video> findVideoByVids(List<Long> vids);

    /**
     * 查询是否关注
     *
     * @param userId       用户id
     * @param followUserId 主播id
     * @return
     */
    Boolean queryIsFollow(Long userId, Long followUserId);

    /**
     * 通过id查询小视频对象
     *
     * @param videoId
     * @return
     */
    Video queryVideoById(String videoId);

    /**
     * 关注主播
     *
     * @param followUser
     */
    void followUser(FollowUser followUser);

    /**
     * 取消关注主播
     *
     * @param userId       用户id
     * @param followUserId 主播id
     */
    void disFollowUser(Long userId, Long followUserId);

    /**
     * 查询指定用户发布的所有视频列表
     *
     * @param uid 当前查看的用户的id
     * @return
     */
    List<Video> findByUserId(Long uid);

    /**
     * 查询指定id的单个视频信息
     *
     * @param publishId       当前视频id
     * @return
     */
    Video findOneByUserId(String publishId);


    /**
     * 查询所有视频信息
     *
     * @return
     */
    List<Video> findAll();
}
